package com.cooriproject.basemanage.controller;

import com.cooriproject.basemanage.config.R;
import com.cooriproject.basemanage.entity.User;
import com.cooriproject.basemanage.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;

@Api(tags = "用户模块")
@RestController
@RequestMapping("/api/user")
public class UserController {
    @Resource
    private UserService userService;
    @ApiOperation(value = "登录")
    @PostMapping("/login")
    public R Login(String userName, String userPwd){
        List<User> list = userService.selectByUserNameAndUserPwd(userName, userPwd);
        if(list.isEmpty()){
            return R.error_dynamic("用户名或密码错误");
        }
        else {
            return R.ok().data("obj",list);
        }
    }
    @ApiOperation(value = "添加用户")
    @PostMapping("/register")
    public R Register(User record){
        int success = 0;
        //try {
            success = userService.insertSelective(record);
        //}
        //catch (Exception e){
        //    return R.error_dynamic("添加用户失败（未定义异常）");
        //}
        if(success==1){
            return R.ok();
        }
        else if(success == -1){
            return R.error_dynamic("用户名重复");
        }
        else if(success == -2){
            return R.error_dynamic("请填写必填项目");
        }else {
            return R.error_dynamic("添加用户失败（未定义错误）");
        }
    }
    //    @ApiOperation(value = "设定用户身份")
//    @PostMapping("/typeInsert")
//    public R type_insert(int userId,int userType) {
//        int success = 0;
//            try {
//                success = userService.updatetypeByPrimaryKey(userId,userType);
//                if(success==1){
//                    return R.ok();
//                }else {
//                    return R.error_dynamic("修改失败");
//                }
//                }
//                catch (Exception e1){
//                    return R.error_dynamic("修改异常");
//            }
//    }
    @ApiOperation(value = "用户列表")
    @PostMapping("/allusers")
    public R AllUsers(){
        List<User> list = userService.selectAll();
        if(list.isEmpty()){
            return R.error_targetnotfound();
        }
        else {
            return R.ok().data("obj",list);
        }
    }
    //    @ApiOperation(value = "管理员更新用户信息")
//    @GetMapping("/updateinfo_admin")
//    public R updateinfo_admin(User record){
//        int success = 0;
//        try {
//            success = userService.updateUserInfo_admin(record);
//            if(success==1){
//                return R.ok();
//            }
//            else
//                return R.error_updateexception();
//        }
//        catch (Exception e){
//            return R.error_updateexception();
//        }
//
//    }
    @ApiOperation(value = "通过id查询用户信息")
    @PostMapping("/selectallbyuserid")
    public R selectallbyuserid(int userId){
        List<User> list = userService.selectAllByUserId(userId);
        if(list.isEmpty()){
            return R.error_targetnotfound();
        }
        else {
            return R.ok().data("obj",list);
        }
    }
    //    @ApiOperation(value = "用户修改密码")
//    @PostMapping("/userUpdatePwd")
//    public R updatepwd(int userName, String userPwd, String newuserPwd){
//        int success = 0;
//        try {
//            List<User> list = userService.selectByUserNameAndUserPwd(userName, userPwd);
//            if (list.isEmpty()){
//                return R.error_dynamic("原密码错误");
//            }
//            else {
//                try {
//                    success = userService.updatepwdByUserName(userName,newuserPwd);
//                    if(success==1){
//                        return R.ok();
//                    }
//                    else return R.error_dynamic("修改失败");
//                }
//                catch (Exception e1){
//                    return R.error_dynamic("修改异常");
//                }
//            }
//        } catch (Exception e2) {
//            return R.error_dynamic("查询异常");
//        }
//    }
    @ApiOperation(value = "删除用户")
    @PostMapping("/delateuserbyid")
    public R delateuserbyid(int userId){
        int success = 0;
        try {
            success = userService.deleteByPrimaryKey(userId);
            if(success==1){
                return R.ok();
            }
            else
                return R.error_dynamic("删除失败");
        }
        catch (Exception e){
            return R.error_dynamic("删除异常");
        }
    }
    @ApiOperation(value = "用户根据id更新用户信息")
    @PostMapping("/updateinfo_user")
    public R updateinfo_user(String userPwd,Integer userId,String userRealname,String userTel,String userMail,Integer userDepart){
        int success = 0;
        try {
            success = userService.updateUserInfo_user(userPwd,userId,userRealname,userTel,userMail,userDepart);
            if(success==1){
                return R.ok();
            }
            else
                return R.error_dynamic("更新异常");
        }
        catch (Exception e){
            return R.error_updateexception();
        }

    }

}
